/**
 * 过滤器上下文
 * 没有封装出 request[请求],response[相应]
 * 还不完善
 */
 
import { errorFilter } from './errorFilter.js'
const filterList = []

export async function runFilter(fun) {
  return await linkedFun(0, fun)()
}

/**
 * 链表方法
 * TODO 没有做添加与删除时候静态调用链表，因为我脑子不够了，以后优化
 * @param {number} index 下标
 * @param {Function} fun 方法
 * @returns Function
 */
function linkedFun(index, fun) {
  return async () => {
    if (filterList.length > index) {
      return await filterList[index](linkedFun(index + 1, fun))
    } else {
      return await fun()
    }
  }
}

/**
 * 注册异常过滤器
 */
filterList.push(errorFilter)
